package com.hannesdorfmann.mosby3.sample.mail.ui.transition; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.annotation.TargetApi; import android.transition.TransitionValues; import android.view.View; import android.view.ViewGroup; import com.hannesdorfmann.mosby3.sample.mail.R; /** * @author Hannes Dorfmann */ @TargetApi(21) public class ExplodeFadeEnterTransition extends ExcludedExplodeTransition { final View senderNameView; final View senderMailView; final View separatorLine; public ExplodeFadeEnterTransition(View senderNameView, View senderMailView, View separatorLine) { this.senderMailView = senderMailView; this.senderNameView = senderNameView; this.separatorLine = separatorLine; excludeTarget(R.id.senderName, true); excludeTarget(R.id.senderMail, true); excludeTarget(R.id.separatorLine, true); } @Override public Animator createAnimator(final ViewGroup sceneRoot, TransitionValues startValues, TransitionValues endValues) { Animator animator = super.createAnimator(sceneRoot, startValues, endValues); animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { senderNameView.setVisibility(View.VISIBLE); senderMailView.setVisibility(View.VISIBLE); separatorLine.setVisibility(View.VISIBLE); senderNameView.setAlpha(0); senderMailView.setAlpha(0); separatorLine.setAlpha(0); } @Override public void onAnimationEnd(Animator animation) { AnimatorSet set = new AnimatorSet(); set.playTogether(ObjectAnimator.ofFloat(senderNameView, "alpha", 0f, 1f), ObjectAnimator.ofFloat(senderMailView, "alpha", 0f, 1f), ObjectAnimator.ofFloat(separatorLine, "alpha", 0f, 1f)); set.setDuration(200).start(); } }); return animator; } }